什么是强制浏览
强制浏览包括避开浏览器导航对应用程序功能访问顺序实施的任何限制。应使用强制浏览测试多阶段过程或其他区域中的错误假设。通常,这些假设会导致可以通过使用强制浏览加以利用的访问控制漏洞。
强制浏览是一种针对受保护程度不佳的网站和Web应用程序的攻击技术,它使攻击者能够访问他们不应该访问的资源。这些资源可能包含敏感信息。强制浏览是由粗心的编码引起的常见Web应用程序安全性问题。
强制浏览由Mitre在CWE-425中正式定义。在来自Open Web Application Security Project的最新OWASP Top-10 2017中,强制浏览不视为单独的类别,而是包含在类别A5:2017-Broken Access Control中。
以下是强制浏览攻击的一些示例。
使用难以猜测的URL
网站或Web应用程序的开发人员使用非常规的文件名和目录名,很难为有价值的资源创建URL。该URL无需身份验证即可访问特权功能。例如:
https://www.example.com/administration/administersite.php
开发人员认为该URL太复杂,无法猜测,没有链接,没有索引或未提交给Google,因此肯定没有人会找到它。但是,攻击者会发现此URL(例如,使用社交工程或其他技术以及诸如蛮力目录枚举,文件枚举,资源枚举之类的扫描工具)来访问该URL,并获得管理员访问权限。尽管许多开发人员都认为,对于熟练的攻击者来说,识别资源并不困难。
可预测的资源位置
网站或Web应用程序的开发人员使用简单身份验证。用户通过身份验证后,便可以访问网站的任何URL。
攻击者是该站点的用户。他们首先访问以下网页:
https://www.example.com/userdata.php?id=2258
然后,他们在浏览器地址栏中输入以下URL,尝试使用代表另一个用户的URL参数:
https://www.example.com/userdata.php?id=2262
如果身份验证过于简单,则他们可以访问属于任何其他用户的敏感数据。他们还可以尝试以下ID:
https://www.example.com/userdata.php?id=1
在许多情况下,ID = 1可能属于管理员用户,并且该页面可能包含有价值的信息,这些信息将使攻击者能够升级其攻击。
访问公用文件和目录
强制浏览与其他类似的Web应用程序安全性问题(例如不安全的直接对象引用和目录列表)密切相关。例如,如果Web服务器打开了目录列表,则强制浏览可能使攻击者能够访问关键信息。这里有些例子:
https://www.example.com/source-code/
在此示例中,Web服务器打开了目录列表,攻击者猜测了通用目录名称source-code,从而可以访问Web应用程序的整个源代码结构。
https://www.example.com/configuration/
在这种情况下,攻击者可以访问所有Web应用程序配置文件。其中一些文件可能包含敏感信息,例如数据库的访问密码。
https://www.example.com/backup/
这次,攻击者可以访问Web应用程序的所有备份文件,例如,可以包括数据库转储。
如何避免强制浏览
为了避免强行浏览攻击,开发人员必须永远不要认为简单的解决方案足以满足应用程序数据安全性:
- 开发人员必须永远不要假定不可能找到公共可访问的URL。如果存在,则可以找到。身份验证是必须的。
- 开发人员必须永远不要假设用户通过身份验证后,就不需要任何其他访问控制。对于访问的每个网页,开发人员必须确保已认证的用户有权访问内容。
要发现潜在的漏洞,您应该使用诸如Acunetix之类的工具来进行高效,自动化的Web应用程序漏洞扫描。这将帮助您快速发现大多数问题,并在攻击者利用它们之前消除它们。您还应该进行手动渗透测试,以发现难以自动发现的问题,例如强制浏览。
强制浏览是:
- 强制浏览是一种针对受保护程度不佳的网站和Web应用程序的攻击技术,它使攻击者能够访问他们不应该访问的资源。这些资源可能包含敏感信息。强制浏览是由粗心的编码引起的常见Web应用程序安全性问题。强制浏览由Mitre在CWE-425中正式定义。在来自Open Web Application Security Project的最新OWASP Top-10 2017中,强制浏览不视为单独的类别,而是包含在类别A5:2017-Broken Access Control中。
避免强制浏览的措施如下:
开发人员必须永远不要假定不可能找到公共可访问的URL。如果存在,则可以找到。身份验证是必须的。
开发人员必须永远不要假设用户通过身份验证后,就不需要任何其他访问控制。对于访问的每个网页,开发人员必须确保已认证的用户有权访问内容。